Systems and methods for performing quantity takeoff computations from computer aided design drawings

ABSTRACT

One or more embodiments of the invention set forth methods for performing quantity takeoff computations from computer aided design (CAD) drawings. The user initiates the quantity takeoff of an instance of a drawing object by manually selecting one or more geometries that visually represent the instance. The quantity takeoff engine identifies or creates a takeoff object that is associated with the drawing object. A takeoff object may include the dimension of geometry to quantify, the object parameter to be quantified, and the takeoff calculations to be performed. The takeoff measurement tool quantifies the instance and adds markup information to the CAD drawings to represent the determined quantity. Subsequently, the quantity takeoff engine performs takeoff calculations and adds the quantity and cost information to a takeoff report representing all previous selected instances. Advantageously, these techniques allow the user to incrementally create takeoff reports without making any manual measurements.

CROSS-REFERENCE TO RELATED APPLICATIONS

The current application is a continuation-in-part of, and claimspriority benefit to, the U.S. patent application titled, “Method forSemi-Automatic Quantity Takeoff from Computer Aided Design Drawings,”filed on Sep. 10, 2007 and having application Ser. No. 11/852,846. Thesubject matter of this related application is hereby incorporated hereinby reference.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention generally relates to computer software. Morespecifically, the present invention relates to techniques for generatingquantity takeoff data from computer aided design drawings.

2. Description of the Related Art

The term computer aided design (CAD) generally refers to a broad varietyof computer-based tools used by architects, engineers, and otherconstruction and design professionals. CAD applications may be used toconstruct computer models representing virtually any real-worldconstruct. Commonly, CAD applications are used to compose computermodels and drawings related to construction projects. For example, a CADapplication may be used to compose a three-dimensional (3D) model of ahouse or an office building. Once composed, these CAD models are oftenused to generate a variety of two-dimensional (2D) and 3D views such asplan, profile, section, and elevation views. Additionally, such modelsmay be used to generate architectural, construction, engineering, andother documentation related to the construction project.

A common requirement of construction projects is to generate an estimateof the cost of the project from the building drawings. This estimate canthen be used as part of the bidding process or as part of the pricingprocess. Takeoff is an estimation of the quantities needed to constructa project based on the drawings and specifications. Quantity takeoff isthe first part of the estimating process. The remainder of theestimating process includes determining your material selection andcost. Quantities may include numerical counts, such as the number ofdoors and windows in a project, but may also include other quantitiessuch as the volume of concrete or the lineal feet of wall space.

Today, the quantity takeoff process is typically performed manually. Forexample, a project manager may use a printout, a pen, and a clicker tomanually count objects depicted in a set of construction documents. Theproject manager may physically mark each instance of an object in a CADdrawing, using the clicker to maintain an instance count. A digitizer isoften used for taking measurements from the printout. The projectmanager or cost engineer evaluates each drawing element individually,identifies the material associated with the element, identifies andquantifies the appropriate dimension of the element, calculates theelement cost, and adds the element cost to the overall cost estimate.

One drawback to this approach is that it has proven to be error-prone.Also, this approach is both labor intensive and time consuming.Moreover, if the project design is modified after the original costestimate is calculated, the takeoff process may need to be repeated. Ifthe takeoff process is not repeated after design changes, accumulatedinaccuracies in the cost estimate may adversely affect the bidding orpricing process. Another drawback to this approach is that it isdifficult and expensive to accurately assess the cost impact ofdifferent design choices.

As the foregoing illustrates, what is needed in the art is a moreeffective and flexible technique for estimating the cost of aconstruction project. That is, for more effective and flexibletechniques for generating quantity takeoff data.

SUMMARY OF THE INVENTION

One embodiment of the present invention sets forth a method forperforming quantity takeoff computations. The method includes the stepsof receiving a selection of a two-dimensional (2D) sheet included in acomputer-aided design (CAD) drawing, receiving a selection of a firstinstance associated with a first drawing object included in the 2Dsheet, quantifying the first instance by determining a first quantifiedvalue, determining a takeoff object associated with the first drawingobject and configured to include cost data, and computing a costestimate for the first instance based on the first quantified value andthe cost data.

One advantage of the disclosed method is that, by automaticallyquantifying instances, the accuracy of takeoff measurements as comparedto manual techniques, such as using a digitizer, is increased. Further,automatically quantifying instances reduces the time required to performtakeoff measurements and, consequently, facilitates quickly andaccurately assessing the impact of different design choices.

BRIEF DESCRIPTION OF THE DRAWINGS

So that the manner in which the above recited features of the presentinvention can be understood in detail, a more particular description ofthe invention, briefly summarized above, may be had by reference toembodiments, some of which are illustrated in the appended drawings. Itis to be noted, however, that the appended drawings illustrate onlytypical embodiments of this invention and are therefore not to beconsidered limiting of its scope, for the invention may admit to otherequally effective embodiments.

FIG. 1 is a conceptual illustration of a computer system in whichembodiments of the invention may be implemented;

FIG. 2 is a conceptual illustration of elements of the system databaseof FIG. 1, according to one embodiment of the invention;

FIG. 3A illustrates an exemplary takeoff object mapping menu, accordingto one embodiment of the invention;

FIG. 3B illustrates a screen display of an exemplary quantify typeselection, according to one embodiment of the invention;

FIG. 3C illustrates a screen display of an exemplary quantify propertyselection, according to one embodiment of the invention;

FIG. 4 illustrates an exemplary takeoff object cost data menu, accordingto one embodiment of the invention;

FIG. 5 illustrates an exemplary screen display of the graphical userinterface of FIG. 1, according to one embodiment of the invention;

FIG. 6 illustrates an exemplary takeoff report, according to oneembodiment of the invention;

FIG. 7 is a conceptual illustration of a 2D CAD drawing sheet, accordingto one embodiment of the invention;

FIG. 8 illustrates a screen display of an exemplary 2D CAD drawingsheet, according to one embodiment of the invention;

FIG. 9 is a flow diagram illustrating a method for generating a takeoffreport, according to one embodiment of the invention;

FIG. 10 is a flow diagram illustrating another method for generating atakeoff report, according to another embodiment of the invention;

FIG. 11 is a flow diagram illustrating another method for generating atakeoff report and further for adding new takeoff objects to the systemdatabase, according to another embodiment of the invention;

FIG. 12 is a flow diagram of method steps for quantifying an instance ofa drawing object, according to one embodiment of the invention;

FIG. 13 is a flow diagram of method steps for measuring a vector,according to one embodiment of the invention; and

FIG. 14 is a flow diagram of method steps for measuring an area of aninstance of a drawing object, according to one embodiment of theinvention.

DETAILED DESCRIPTION

FIG. 1 is a conceptual illustration of a computer system 100 in whichembodiments of the invention may be implemented. As shown, the computersystem 100 is configured to store takeoff data, perform takeoffmeasurements, and generate takeoff reports. In one embodiment, thecomponents illustrated in computer system 100 include computer softwareapplications executing on existing computer systems, e.g., desktopcomputers, server computers, laptop computers, tablet computers, and thelike. The software applications described herein, however, are notlimited to any particular computing system and may be adapted to takeadvantage of new computing systems as they become available.

Additionally, the components illustrated in computer system 100 may besoftware applications executing on distributed systems communicatingover computer networks including local area networks or large, wide areanetworks, such as the Internet. For example, a graphical user interface104 may include a software program executing on a client computer systemcommunicating with a quantity takeoff engine 102. Also, in oneembodiment, the quantity takeoff engine 102 and the graphical userinterface 104 may be provided as an application program (or programs)stored on computer readable media such as a CD-ROM, DVD-ROM, flashmemory module, or other tangible storage media.

As shown, the computer system 100 includes, without limitation, thequantity takeoff engine 102, the graphical user interface 104, akeyboard 112, a mouse 114, a display device 116, a system database 106,a project database 108, and a CAD drawing 110. The quantity takeoffengine 102 may be configured to allow users interacting with thegraphical user interface 104 via the keyboard 112 and the mouse 114 togenerate takeoff objects containing information used to perform thequantity takeoff, such as the unit cost of construction materials, andtakeoff reports detailing the estimated cost of the project. Also asshown, the graphical user interface 104 provides takeoff measurementtools 118 and takeoff reporting tools 120. The takeoff measurement tools118 include a property takeoff measurement tool 182, a linear takeoffmeasurement tool 184, an area takeoff measurement tool 186, and othermeasurement tools. Further, the takeoff measurement tools 118 mayinclude takeoff object manipulation tools, instance search tools, andtakeoff graphical command tools. The takeoff reporting tools 120 may beused to generate and display a takeoff report on the display device 116.

In one embodiment, the system database 106 may include information, suchas drawing information and the unit cost of labor, shared among multipleCAD projects. Similarly, the project database 108 may also includedrawing information and takeoff calculations, but it may also includeproject-specific data, such as project cost.

The composition of a given design project may be reflected in acollection of one or more CAD drawings 110. Illustratively, CAD drawing110 includes a three-dimensional (3D) model 122 and one or moretwo-dimensional (2D) sheets 124. The 3D model 122 may representvirtually any real-world construct, for example, a construction plan fora building. In such a case, the 3D model 122 may include detailed 3Dgeometry representing the building, each floor of the building, anddifferent systems for the building (e.g., electrical systems, HVACsystems, etc.). The 2D sheets 124 may be derived from the 3D model 122and provide different views of the 3D model 122, such as plan, profile,and section views of the project. In one embodiment, the quantitytakeoff engine 102 may be configured to use and generate information inthe system database 106, the project database 108, and the CAD drawing110. Accordingly, the quantity take off engine 102 and the graphicaluser interface 104 may include programmed routines or instructionsallowing users to create, edit, load, and save elements from systemdatabase 106, the project database 108, and/or the CAD drawing 110. Inthe context of the present invention, for example, the graphical userinterface 104 may allow users to create, edit, load, and save takeoffobjects and takeoff reports. Those skilled in the art will recognize,however, that the components shown in FIG. 1 are simplified to highlightaspects of the present invention and that the graphical user interface104 may include a broad variety of additional tools and features used tocompose and manage the system database 106, the project database 108,and the CAD drawing 110.

FIG. 2 is a conceptual illustration of elements in the system database106 of FIG. 1, according to one embodiment of the invention. As shown,the system database 106 includes a drawing category 200 and a takeoffcategory 202. As described below, the drawing category 200 and thetakeoff category 202 are used to organize data within the systemdatabase 106. Those skilled in the art will recognize, however, that thecomponents shown in FIG. 2 are simplified to highlight aspects of thepresent invention and that the system database 106 may include a widevariety of organizational structures and data.

As shown, the drawing category 200 includes a drawing object 1 204, adrawing object 2 206, a drawing object N−1 208, and a drawing object N210. Each of the drawing objects 204, 206, 208, and 210 may be created,edited, and used by various CAD tools, including the quantity takeoffengine 102 and the graphical user interface 104 of FIG. 1. Furthermore,each of the drawing objects 204, 206, 208, and 210 may define anabstract template from which specific instances, or entities, may becreated. For example, the drawing object 1 200 may define a toiletobject and the CAD drawing 110 of FIG. 1 may contain numerous instancesof toilets, each of which inherits some data from the toilet objectdesignated by drawing object 1 200. This hierarchy simplifies changesand ensures consistency throughout a construction project.

Illustratively, the drawing object 1 200 includes a globally uniqueidentifier (GUID) 220, linework 222, and properties 224. The GUID 220uniquely identifies the drawing object 1 200 to the quantity takeoffengine 102, the graphical interface 104, and any other associated CADtools in the computer system 100 of FIG. 1. That is GUID 220 may be usedto represent a common class of drawing objects in CAD drawing 110.Furthermore, GUID values may be used by other constructs, such astakeoff objects and instances of drawing object 1 200. The linework 222may define shapes, such as points, lines, and curves that may bedisplayed by the graphical user interface 104. For example, the linework222 could provide the shapes required to display a toilet in 3D views orin 2D profile, plan, or section views generated from the CAD drawing110. The properties 224 may further define how CAD tools interact withthe object 1 200 and any instances of object 1 200. The properties 224may define metadata about a given drawing object such as width, height,weight, etc. Each of the drawing objects 206, 208, and 210 may includesimilar information, representing different objects that may be includedin the CAD drawing 110.

The takeoff category 202 includes a takeoff object 1 212, a takeoffobject 2 214, a takeoff object N−1 216, and a takeoff object N 218. Thetakeoff category 202 may correspond to a standard organizational system,such as CSI-16 or Uniformat. Each of the takeoff objects 212, 214, 216,and 218 may correspond to a drawing object, such as drawing object 1200, and may be created, edited, and used by various CAD tools,including the quantity takeoff engine 102 and the graphical userinterface 104. For example, a takeoff object, such as takeoff object 1212, corresponding to a toilet drawing object may be created, added tothe takeoff category 202 for plumbing fixtures, and subsequently usedfor quantity takeoff.

As shown, the takeoff object 1 212 includes a drawing object GUID 226, aquantify type 228, a quantify property 230, and cost data 232. During aquantity takeoff process, the drawing object GUID 226 may be used toidentify a particular drawing object and a corresponding set ofinstances to which the data in takeoff object 1 212 may be applied. Thequantify type 228, the quantify property 230, and the cost data 232 maythen be used to estimate the cost of each of the instances associatedwith the takeoff object 1 212. In one embodiment, the quantify type 228defines the type of enumeration, such as count, linear, or area, that isused to calculate the cost of each instance. And the quantify property230 may define an instance-specific property, such as a length or avolume, corresponding to the quantify type 228. In other words, thequantify property 230 defines how the cost of a collection of instancesof a given drawing element should be quantified for a takeoff report.The cost data 232 may include numerical constants, such as labor costper unit, as well as takeoff equations used to estimate cost.

For example, the takeoff object 1 212 may be created to correspond tothe drawing object of a toilet. In this example, the drawing object GUID226 of the takeoff object 1 212 may be identical to the object GUID 220of the drawing object corresponding to the toilet, thereby indicatingthat the information in the takeoff object 1 212 may be applied to allinstances of the drawing object (i.e., instances of the toilet) in agiven CAD drawing 110. In this case, the quantify type 228 may be set tocount, indicating that the quantity to measure during takeoff is simplythe number of instances of the drawing object corresponding to thetoilet. Furthermore, the cost per toilet may be specified in the costdata 232. The information in takeoff object 1 212, when applied to theCAD drawing 1 110, allows all instances of the toilet in CAD drawing 1110 to be counted and the total cost of the toilets to be added to thetotal cost for the project represented by CAD drawing 1 110.

FIGS. 3A and 4 show an exemplary graphical interface for defining andviewing takeoff object properties. As shown, there are two selectabletabs: cost data and mapping. In FIG. 3A, the cost data tab is selectedand in FIG. 4 the mapping tab is selected.

FIG. 3A illustrates an exemplary takeoff object mapping menu 300,according to one embodiment of the invention. The takeoff object mappingmenu 300 may be configured to allow the user to enter and to view thequantify type 228 and the quantify property 230 of each of the takeoffobjects 212, 214, 216, and 218 of FIG. 2.

As shown, the takeoff object mapping menu 300 for a “basic wall”includes a quantify type selection 302 and a quantify property selection304. The quantify type selection 302 corresponds to the quantify type228 of a given takeoff object. In this example, the quantify type 228may be one of unidentified, linear, area, or count. In the takeoffobject mapping menu 300 shown in FIG. 3A, the quantify propertyselection 304 is configured to present a list of instance-specificproperties. The selected instance property corresponds to the quantifyproperty 230 of a given takeoff object. Illustratively, length isselected, thus, when the quantity takeoff engine 102 performs quantitytakeoff on the CAD drawing 110, the length property of the instances ofthe drawing object representing a “basic wall” may be the basis of acost estimate for the instances of a “basic wall” present in the CADdrawing 110.

FIG. 3B illustrates a screen display of an exemplary quantify type 228selection, according to one embodiment of the invention. In thisexample, the quantify type 228 is being selected for the takeoff objectassociated with an exterior 10″ brick wall. As shown, the quantify type228 of the takeoff object associated with the exterior 10″ brick wallmay be one of unidentified, linear, area, volume, or count. Morespecifically, linear is being selected for the quantify type 228included in the takeoff object associated with the exterior 10″ brickwall.

FIG. 3C illustrates a screen display of an exemplary quantify property230 selection, according to one embodiment of the invention. In thisexample, the quantify property 230 is being selected for the takeoffobject associated with the exterior 10″ brick wall. As shown, thequantify property 230 included in the particular takeoff objectassociated with the exterior 10″ brick wall may be one of base offset,length, top offset, unconnected height, or width. More specifically,length is being selected for the quantify property 230 included in thetakeoff object associated with the exterior 10″ brick wall.

FIG. 4 illustrates an exemplary takeoff object cost data menu 400,according to one embodiment of the invention. The takeoff object costdata menu 400 may be configured to allow the user to enter and view thecost data 232 for each of the takeoff objects 212, 214, 216, and 218 ofFIG. 2.

As shown, the takeoff object cost data menu 400 includes a unit andlabor cost selection 402 and an equipment cost selection 404. In oneembodiment, the unit and labor cost selection 402 may be configured toallow the user to view and specify items relating to the costs ofmaterial and labor, such as the currency, unit, material cost per unit,and labor cost per unit. Similarly, the equipment cost selection 404allows the user to view and specify the cost of any associated equipmentusing the currency specified in the unit and labor cost menu 402.

Illustratively, in this example, cost data is shown for a takeoff objectof “basic wall”. As shown, the base quantity to be measured is length,the currency is dollars, the material cost per unit of length is $20,the labor cost per unit of length is $14, and the equipment cost is $0.

FIG. 5 illustrates an exemplary screen display of the graphical userinterface 104 of FIG. 1, according to one embodiment of the invention.More specifically, the screen display in FIG. 5 illustrates a takeofflist 500. As shown, the takeoff list 500 includes takeoff categories,such as the takeoff category 202 of FIG. 2; takeoff objects, such astakeoff object 204 of FIG. 2; and the instances in the CAD drawing 110of FIG. 1 that are associated with each of the takeoff objects. Thetakeoff list 500 facilitates user-interaction with the takeoffmeasurement tools 118 of FIG. 1, the takeoff reporting tools 120 of FIG.1, and the quantity takeoff engine 102 of FIG. 1.

Illustratively, in this example takeoff is being performed on a specificinstance of the takeoff object for a “basic wall”. Alternatively, asalso shown in the menu options in this example, the user may execute“select all instances” before executing takeoff and, thereby, performtakeoff on all instances of a “basic wall” simultaneously.

FIG. 6 illustrates an exemplary takeoff report 600, according to oneembodiment of the invention. Using the takeoff reporting tools 120 ofFIG. 1, the takeoff report 600 may be configured to display the takeoffdata in a variety of forms. As shown, the takeoff report 600 isconfigured to include a description 602, a quantity 604, a material cost606, a labor cost 608, an equipment cost 610, and a total cost 612.

Also as shown, the column under description 602 includes takeoff objectsand associated instances. For each item shown under the description 602heading, the quantity 602, the material cost 604, the labor cost 608,the equipment cost 610, and the total cost 612 is displayed.Furthermore, the material cost 610 is configured to show both the costper unit of the material and the total cost of the material. Similarly,the labor cost 608 is configured to show both the unit cost of labor andthe total cost of labor.

In the specific takeoff report 600 illustrated in FIG. 6, thedescription column indicates that the quantity takeoff engine 102 hasperformed takeoff on the “basic wall” and the “door #1” takeoff objects.Furthermore, the description column shows that the quantity take offengine 102 has identified four instances corresponding to the “basicwall” takeoff object and one instance corresponding to the “door #1”takeoff object. As can be seen in the square corresponding to thequantity column of the “basic wall” row, the total quantity used tocalculate the cost of the four instances of the “basic wall” is 18.97meters. Similarly, the total quantity used to calculate the cost of theone instance of “door #1” is 1 each. The total cost column shows a totalcost of $569.10 for the four instances of “basic wall”, a total cost of$48.00 for the one instance of “door #1”, and a cumulative project totalcost of $617.10.

FIG. 7 illustrates an example of one of the 2D sheets 124 of FIG. 1,according to one embodiment of the invention. As shown, the 2D sheet 124includes an instance 1 700 of a drawing object, an instance 2 702 of adrawing object, an instance N−1 704 of a drawing object, and an instanceN 706 of a drawing object. Each of the instances 700, 702, 704, and 706correspond to a drawing object, such as drawing object 1 204 of FIG. 2.Each drawing object may be defined in the system database 106 of FIG. 1,the project database 108 of FIG. 1, or the CAD drawing 110 of FIG. 1.

The instance 1 700 is configured to include a drawing object GUID 708, aposition 710, an instance GUID 712, and properties 714. The instance 1700 may inherit data from the drawing object designated by the drawingobject GUID 708. For example, if the drawing object corresponding to thedrawing object GUID 708 defines a door, instance 1 700 will inherit thelinework 222 and the properties 224 that define this door. The position710 specifies the location of the instance 1 700 relative to otherinstances, such as the instance N 706, included in the CAD drawing 110.For example, the position 710 may specify a 3D coordinate locationwithin a space represented by the 2D sheet 124. The instance GUID 712uniquely identifies the instance 1 700 to the quantity takeoff engine102, the graphical interface 104, and any other associated CAD tools inthe computer system 100 of FIG. 1. While instance 1 700 and instance 2702 may share the same drawing object GUID 708, thereby indicating thatthey are both instances of the same drawing object, instance 1 700 andinstance 2 702 have different instance GUIDs 712. The properties 714include information that is specific to each instance, as opposed toinformation that is shared between instances of the same object. Forexample, one of the properties 714 such as length or width may be usedas the basis for quantifying the instance 1 700 during a quantitytakeoff process. Each of the instances 702, 705, and 706 may includesimilar information.

FIG. 8 illustrates a screen display of an exemplary 2D sheet of FIG. 1according to one embodiment of the invention. As shown, the screendisplay includes a visual representation of the instance 1 700 of FIG.7. In this example, the appearance of the instance 1 700 indicates thatit is a door. The graphical user interface 104 of FIG. 1 may beconfigured to allow the user to interact with the visual representationof the CAD drawing 110 of FIG. 1 and, thus, the instances containedwithin the CAD drawing 110.

FIG. 9 is a flow diagram of a method 900 for generating the takeoffreport 600 of FIG. 6, according to one embodiment of the invention.Although the method 900 is described in conjunction with the systems ofFIGS. 1-8, persons skilled in the art will understand that any systemthat performs the steps of the method 900, in any order, is within thescope of the invention.

As shown, the method 900 begins at step 902, where the user invokes thequantity takeoff engine 102 and loads the CAD drawing 110. In step 904,the user selects an instance of a drawing object from the CAD drawing110. In step 906, a new takeoff object is created to represent takeoffdata for the drawing object selected in step 904. In one embodiment, thenew takeoff object may include the drawing object GUID 226. The GUID 226may be copied from the particular instance of a drawing object GUID 708selected at step 904, thereby creating the association between thetakeoff object and the drawing object, based on the instance of adrawing object by the user.

In step 908, the takeoff object mapping menu 300 is displayed and theuser may enter values for the quantify type 228 and the quantifyproperty 230. In step 910, the takeoff object cost data menu 400 isdisplayed and the user may enter takeoff cost information, such as thecost data 232. In step 912, the quantity takeoff engine 102 may parsethe CAD drawing 110 to identify all drawing objects in which the drawingobject GUID 708 matches the drawing object GUID 226 of the takeoffobject defined in steps 906-910. In other words, the quantity takeoffengine 102 may identify all objects in the CAD drawing 110 of a commontype, as represented by object GUID 708.

In step 914, the takeoff measurement tools 118 and the quantity takeoffengine 102 may use the quantify type 228 and the quantify property 230to quantify each of the instances identified at step 912. In oneembodiment, each such instance may be marked as being part of a commontakeoff group. That is, the quantity takeoff engine 102 may determinethe appropriate takeoff quantities for the collection of drawing objectinstances identified at step 912. For example, for a door object, thequantity may be a simple count of the number of instances of the doorobject in the drawing. Of course, more complicated takeoff calculationsmay be performed. For example, for a wall object, the takeoff engine 102may evaluate instances of the wall object in CAD drawing 110 todetermine a combined linear length of all such walls.

In step 916, the quantities determined at step 914 are used inconjunction with the cost data 232 to estimate the cost of theidentified instances. For example, for a simple numerical count quantitytakeoff calculation, the number of identified instances may simply bemultiplied by the unit cost for the material and labor, as specified inthe takeoff object, to determine the total cost of the instances. Instep 918, the takeoff reporting tools 120 may add the quantitiesmeasured in step 914 and the costs calculated in step 916 to the takeoffreport 600. At step 920, the user may select another instance in a CADdrawing to be the basis of another takeoff object. In such a case, themethod 900 returns to step 906, where a new takeoff object is created.The user may continue in this manner to create as many new takeoffobjects as desired.

The method 900 may be useful where a user desires to incrementally builda takeoff report by iteratively selecting the linework for an instanceof each drawing object. However selecting linework may become tediousand the user may desire to use a more structured selection method.Accordingly, in one embodiment, the quantity takeoff engine 102 may beconfigured to identify a collection of drawing objects in the CADdrawing 110 and to generate corresponding takeoff objects for eachidentified drawing object.

FIG. 10 is a flow diagram illustrating a method 1000 steps forgenerating the takeoff report 600 of FIG. 6, according to one embodimentof the invention. Method 1000 uses information from the CAD drawing 110of FIG. 1 to automate more of the takeoff process. Although method 1000is described in conjunction with the systems of FIGS. 1-8, personsskilled in the art will understand that any system that performs themethod 1000, in any order, is within the scope of the invention.

As shown, the method 1000 begins at step 1002, where the user invokesthe quantity takeoff engine 102 and loads the CAD drawing 110. In step1004, the quantity takeoff engine 102 may generate a model tree ofdrawing objects and instances from the CAD drawing 110. The model treestores drawing objects and instances of drawing objects. In oneembodiment, instances of a drawing object in the CAD drawing 110 thatshare a common drawing object GUID 708 may be grouped together in themodel tree. In step 1006, a takeoff object is created for each distinctdrawing object in the model tree. In one embodiment, each takeoff objectincludes the drawing object GUID 226. Advantageously, the groupings inthe model tree are preserved, thus each takeoff object may also includea reference to each instance of a drawing object that corresponds to thedrawing object GUID 226. In step 1008, the model tree is used topopulate the takeoff list 500 with the takeoff objects and theirassociated instances. For example, FIG. 5 illustrates an example of atakeoff list 500 that may be displayed using the graphical userinterface 104.

In step 1010, the user may specify properties for a takeoff object forone of the entries in the takeoff list. Accordingly, in step 1012, thetakeoff object mapping menu 300 is displayed and the user enters thequantify type 228 and the quantify property 230 for a given takeoffobject. In step 1014, the takeoff object cost data menu 400 is displayedallowing the user to enter takeoff cost information, such as the costdata 232.

In step 1016, the takeoff measurement tools 118 and the quantity takeoffengine 102 use the quantify type 228 and the quantify property 230 toquantify each of the instances associated with the selected takeoffobject. That is, at step 1016, the instances of the drawing objectassociated with the selected takeoff object are evaluated to generatethe appropriate takeoff quantities for a set of instances in the CADdrawing 110. In step 1018, the quantity takeoff engine 102 evaluatesthese quantities along with the cost data 232 to estimate the cost foreach of the instances of the drawing object in the CAD drawing 110. Instep 1020, the takeoff reporting tools 120 may add the quantitiesmeasured in step 1016 and the costs calculated in step 1018 to thetakeoff report 600. At step 1022, the quantity takeoff engine 102analyzes the takeoff tree to determine if the cost estimate is complete.If there are additional instances of drawing objects that have not beenquantified, the method returns to step 1010, where the user definesanother takeoff object from the takeoff object list. The method 1000continues in this fashion until each takeoff object in the takeoff treehas been defined and processed, thereby generating the takeoff report600 and, thus, a cost estimate representing the entire project.

The method 1000 may be useful where a user desires to incrementallybuild a takeoff report. However a user may prefer to generate a completetakeoff report using a single command. Furthermore, a user may wish toshare takeoff objects between construction projects.

FIG. 11 is a flow diagram of method steps for generating the takeoffreport 600 of FIG. 6 and adding new takeoff objects to the systemdatabase 106 of FIG. 1, according to one embodiment of the invention.Storing takeoff objects in the system database 106 allows takeoffobjects to be shared among multiple projects, thereby increasing takeoffconsistency between the projects. For example, an architectural firm maywish to reuse takeoff objects defined for elements of a given CADdrawing across multiple drawing projects. Doing so avoids having torecreate this data from scratch each time. In one embodiment, the systemdatabase may be used to store take off objects used for reuse inmultiple design projects. Although the method steps are described inconjunction with the systems of FIGS. 1-8, persons skilled in the artwill understand that any system that performs the method steps, in anyorder, is within the scope of the invention.

As shown, the method 1100 begins at step 1102, where the user invokesthe quantity take off engine 102, loads the CAD drawing 110, and loadsthe system database 106. In step 1104, the quality takeoff engine 102attempts to map instances of drawing objects in the CAD drawing 110 tothe takeoff objects defined in the system database 106. For example, thequantity takeoff engine 102 may be configured to match the drawingobject GUID 708 for a given instance to the drawing object GUID 226 ofthe takeoff objects. At step 1106, the CAD drawing 110 is analyzed todetermine if all the instances have been mapped to takeoff objects. Ifall the instances have been mapped, the method 1100 skips steps1108-1110 and continues at step 1112, where the instances arequantified, according to the matching takeoff object associated with agiven instance of a drawing object.

In step 1108, the quantity takeoff engine may be configured to promptthe user to define additional takeoff objects for instances of drawingobjects that were not matched to a takeoff object at step 1104. Forexample, in one embodiment, new takeoff objects may be defined accordingto steps 904-910 of the method 900 illustrated in FIG. 9. In step 1110,the system database 106 is updated with the takeoff objects created instep 1108. The method 1100 then returns to step 1104, where allinstances of drawing objects in the CAD drawing 110 are mapped totakeoff objects defined in the system database 106. As persons skilledin the art will recognize, step 1104 may be performed in an incrementalfashion, such that only unmapped instances and new takeoff objects areconsidered during the mapping process. Again, at step 1106, if allinstances of drawing objects are mapped to takeoff objects, the flowcontinues at step 1112. Otherwise, method 1100 may continue to loopthrough steps 1108, 1110, 1104, and 1106 until all instances of drawingobjects in a given CAD drawing are mapped to takeoff objects.

In step 1112, the takeoff measurement tools 118 and the quantity takeoffengine 102 use the quantify type 228 and the quantify property 230 toquantify each of the instances of drawing objects in CAD drawing 110. Instep 1114, the quantity takeoff engine 102 evaluates these quantitiesalong with the cost data 232 to estimate the cost for each instance ofeach drawing object in the CAD drawing. In step 1116, the takeoffreporting tools 120 generate the takeoff report 600 from the quantitiesmeasured in step 1112 and the costs calculated in step 1114. The takeoffreport 600 generated in this flow includes the total estimated cost ofthe project defined in the CAD drawing 110.

In sum, the data contained in CAD drawings may be used to automateportions of the takeoff process used to generate estimated costs fordesign and construction projects, among others. Typically, a CAD drawingcontains abstract drawing objects from which concrete instances may bederived. Each instance may include instance-specific information thatmay be supplemented with information inherited from the associatedabstract drawing object. This hierarchical approach simplifies the CADdrawing. In a similar fashion, much of the information required toperform takeoff calculations, such as material cost, may be consolidatedinto abstract takeoff objects. Typically, data in the takeoff object mayinclude a mapping method, such as using an object GUID, to identifyinstances of a drawing object associated with the takeoff object; thequantify type, such as count, linear, or area; the instance-specificproperty, such as length or volume, to be quantified; and takeoff costinformation, such as material cost per unit of the quantify property.The quantity takeoff engine and the graphical user interface may beconfigured to interact with these takeoff objects to automate some ofthe steps in takeoff process. Advantageously, consolidating takeoffinformation and automating steps in the takeoff process reduce both thelikelihood of errors and the time required to perform quantity takeoff.Furthermore, reducing the time required to perform quantity takeofffacilitates quickly and accurately assessing the cost impact ofdifferent design choices.

In a first embodiment, the user selects an instance and defines anassociated takeoff object. The quantity takeoff engine is configured touse the information in this takeoff object to identify all associatedinstances in the CAD drawing, quantify these instances, calculate thecost of these instances, and add the quantities and costs to the takeoffreport. The user may continue to select instances until all instances inthe project have been quantified, thereby generating an estimate for thetotal project cost. Again, the takeoff measurement tools automaticallyquantify each instance, thereby increasing the accuracy of themeasurements as compared to manual techniques, such as using adigitizer. Moreover, the takeoff calculations, such as labor costequations, are also performed automatically, further reducing thelikelihood of errors in the project cost estimate.

In a second embodiment, the information in the CAD drawing is used tocreate a takeoff tree of undefined takeoff objects and associatedinstances. Every instance in the CAD drawing is included in the takeofftree. The quantity takeoff engine evaluates the takeoff tree and promptsthe user to define takeoff objects until all of the takeoff objects havebeen defined. After each takeoff object is defined, the quantity takeoffengine applies the information in the takeoff object to the associatedinstances in the takeoff tree to generate quantity and cost informationfor the associated instances. These quantities and costs are added tothe takeoff report. Thus, when all takeoff objects have been defined,the takeoff report includes the quantity and cost of each instance inthe CAD drawing. In addition to the advantages of the first embodiment,this embodiment also ensures that all instances are quantified. Forexample, in the first embodiment, it is possible for the user to neglectto select an instance, resulting in an inaccurate project cost estimate.In this embodiment, the user is prompted if any takeoff objects areundefined, thereby ensuring a complete project cost estimate.

In a third embodiment, the quantity takeoff engine is configured tointeract with a system database that may contain takeoff objects. Thequantity takeoff engine evaluates each instance in the CAD drawing andattempts to map each instance to a corresponding takeoff object in thesystem database. If there are any instances that are not mapped to atakeoff object, then the user is prompted to define additional takeoffobjects. The new takeoff objects are added to the system database andthe quantity takeoff engine attempts to map the previously unmappedinstances to the newly defined takeoff objects. When all instances aresuccessfully mapped, the information in the takeoff objects is used toquantify each instance and subsequently calculate the cost of eachinstance. These quantities and costs are used to generate a takeoffreport for the entire CAD drawing as well as a complete estimate ofproject cost. Advantageously, utilizing the system database in thisfashion allows takeoff objects to be shared amongst projects, therebyincreasing consistency between projects. Furthermore, as projects arecompleted, the system database increases in capability. Over time, thecreation of new takeoff objects decreases as the system database becomesmore complete, thereby reducing the time required to perform takeoff.

To facilitate a per-instance incremental design flow in some embodimentsof the invention, the graphical user interface 104 includes programmedroutines or instructions that enable instance-based operations. Again,the graphical user interface 104 of FIG. 1 is configured to allow theuser to interact with the visual representation of the CAD drawing 110of FIG. 1. For example, the graphical user interface 104 enables theuser to select geometries and instances of drawing objects that areincluded in the 2D sheets, which are part of the CAD drawing. Morespecifically, referring back now to FIG. 8, the 2D sheet 124 includes aset of geometries that visually represent the instance 1 700. Thegraphical user interface 104 is configured to enable the user to selectthe instance 1 700 or any geometry or point in the 2D sheet 124.Further, the graphical user interface 104 may be configured to allow theuser to select an instance in one 2D sheet, to enumerate each of theremaining 2D sheets that include the selected instance, to select one ofthese enumerated 2D sheets, to load the selected 2D sheet, and tohighlight the selected instance.

Referring back to FIG. 1, to further facilitate a per-instanceincremental design flow, in some embodiments, the takeoff measurementtools 118 include the property takeoff measurement tool 182, the lineartakeoff measurement tool 184, and the area takeoff measurement tool 186.Each of these instance-based takeoff measurement tools 118 enable theuser to select a single instance, such as instance 1 700 of FIG. 7 and,subsequently, automatically quantify the selected instance. Afterquantifying the selected instance, the takeoff measurement tool 118 addsmarkup information to the CAD drawing 110 and all of the associated 2Dsheets 124 to visually indicate the quantified value. For example, afterthe linear takeoff measurement tool 184 calculates the length of aselected instance, the linear takeoff measurement tool 184 and thegraphical user interface 104 may visually superimpose the measuredlength above the selected instance in any 2D sheets that includes theselected instance. Advantageously, by marking the quantified instance inall 2D sheets, the takeoff measurement tool 118 reduces the likelihoodthat a user will quantify a particular instance more than once.

The various instance-based takeoff measurement tools 118 enable the userto quantify an instance based on information available in the CADdrawing 110. If only geometrical information is available, then the usermay elect to use a pure measurement tool, such as the linear takeoffmeasurement tool 184 or the area takeoff measurement tool 186. However,if more detailed takeoff information is available, then the user mayelect to use a takeoff measurement tool 118, such as the propertytakeoff measurement tool 182, that utilizes more detailed takeoffinformation to quantify each instance.

Each of the takeoff measurement tools 118 is configured to interact withthe quantity takeoff engine 102 to facilitate the remainder of thetakeoff process. For example, after an area takeoff measurement tool 186calculates the area of a selected instance, this tool may update theinformation in the quantity takeoff object associated with the selectedinstance. Subsequently, the quantity takeoff engine may use the updatedinformation in the quantity takeoff object to determine the cost of theinstance and add this cost to an incremental takeoff report thatincludes all previously selected instances. Consequently, by selectingand quantifying an instance using an instance-based takeoff measurementtool 118, the user may incrementally build a takeoff report thatrepresents any desired set of instances.

FIG. 12 is a flow diagram of method steps for quantifying an instance ofa drawing object, according to one embodiment of the invention. Method1200 uses information from the CAD drawing 110 of FIG. 1 to automate thequantify process. Although the method steps are described in conjunctionwith the system for FIGS. 1-8, persons skilled in the art willunderstand that any system that performs the method steps, in any order,is within the scope of the invention.

As shown, the method 1200 begins at step 1202, where the user invokesthe quantity takeoff engine 102, loads the CAD drawing 110, and selectsa 2D sheet from the CAD drawing 110. At step 1204, the user selects aninstance of a drawing object in the selected 2D sheet using the propertytakeoff measurement tool 182. At step 1206, if the property takeoffmeasurement tool 182 determines that there is an existing takeoff objectthat corresponds to the selected instance, then the method 1200 proceedsto step 1210. The property takeoff measurement tool 182 may search for atakeoff object that corresponds to the selected instance in anytechnically feasible fashion. For example, the property takeoff enginemay read a drawing object GUID included in the selected instance andsearch for a takeoff object that includes a matching drawing object GUI.Alternatively, the property takeoff engine may use pattern matchingbased on the name of the instance to select a corresponding takeoffobject. If, at step 1206, the property takeoff measurement tool 182determines that there is no existing takeoff object corresponding to theselected instance, then the method 1200 proceeds to step 1208, where theproperty takeoff measurement tool 182 prompts the user to create a newtakeoff object. Again, as previously described herein, the propertytakeoff measurement tool 182 may create the new takeoff object in anytechnically feasible fashion.

At step 1210, the property takeoff measurement tool 182 uses thequantity type 228, the quantify property 230, and any additionalmeasurement calculations included in the identified takeoff object, inconjunction with the instance-specific value of the quantify property230, to quantify the selected instance. For example, the propertytakeoff measurement tool 182 may quantify a dry wall instance bydividing a specified wall length property by a constant linear lengthrepresenting the length of a dry wall panel to determine a count of drywall panels. At step 1212, the property takeoff measurement tool 182adds markup information to the selected 2D sheets and any other 2Dsheets 124 in the CAD drawing 110 that include the selected instance.The markup information indicates the quantified value determined at step1210. For example, the property takeoff measurement tool 182 may addmarkup information indicating the count of dry wall panels associatedwith the selected instance to each of the 2D sheets 124 that includesthe selected instance. At step 1214, the property takeoff measurementtool 182 updates the takeoff object to include the quantified value. Atstep 1216, the quantity takeoff engine 102 calculates the costassociated with the quantified value and updates a takeoff report thatincludes similar costs computed for all instances previously selectedusing the takeoff measurement tools 118.

FIG. 13 is a flow diagram of method steps for measuring a vector,according to one embodiment of the invention. Although the method stepsare described in conjunction with the system for FIGS. 1-8, personsskilled in the art will understand that any system that performs themethod steps, in any order, is within the scope of the invention.

As shown, the method 1300 begins at step 1302, where the user invokesthe quantity takeoff engine 102, loads the CAD drawing 110, and selectsa 2D sheet from the CAD drawing 110. At step 1304, the user selects avector (i.e., line) in the selected 2D sheet using the linear takeoffmeasurement tool 184. At step 1306, the linear takeoff measurement tool184 determines the virtual length of the selected vector. The lineartakeoff measurement tool 184 may determine the virtual length in anytechnically feasible fashion. Say, for example, that the selected vectoris a horizontal vector. The linear takeoff measurement tool 184 maysubtract the x-coordinate of one of the end-points of the selectedhorizontal vector from the x-coordinates of the other end-point of thehorizontal vector to determine the virtual length of the vector. At step1308, the linear takeoff measurement tool 184 reads a sheet scaleassociated with the selected 2D sheet. The sheet scale specifies theconversion between the dimensions of the representative elements in the2D sheet and the actual elements. For example, a sheet scale of 1″=20′indicates that a vector spanning 2″ on the sheet represents an elementthat is 40′ in length. At step 1310, the linear takeoff measurement tool184 determines the length of the selected vector by multiplying thevirtual length by the sheet scale.

At step 1312, the linear takeoff measurement tool 184 determines theinstance associated with the selected vector. The linear takeoffmeasurement tool 184 may determine the instance in any technicallyfeasible fashion. For example, the linear takeoff measurement tool 184may search the 2D sheet 124 for an instance that includes the selectedgeometry. At step 1314, the linear takeoff measurement tool 184 addsmarkup information to the selected 2D sheet and any other 2D sheets 124in the CAD drawing 110 that include the instance. The markup informationindicates the length of the selected vector. At step 1316, the lineartakeoff measurement tool 184 maps the instance to a takeoff object. Aspart of the mapping process, in one embodiment, the linear takeoffmeasurement tool 184 first determines whether there is an existingtakeoff object corresponding to the instance. If there is nocorresponding takeoff object, then the linear takeoff measurement tool184 creates a new takeoff object, sets the quantify type included in thetakeoff object to “linear,” and prompts the user to enter cost data.Subsequently, the quantity takeoff engine 102 modifies the cost of theinstance associated with the vector, based on the length of the vectorand the cost data, and updates a takeoff report that includes similarcosts computed for all instances previously selected using the takeoffmeasurement tools 118.

FIG. 14 is a flow diagram of method steps for measuring an area of aninstance of a drawing object, according to one embodiment of theinvention. Although the method steps are described in conjunction withthe system for FIGS. 1-8, persons skilled in the art will understandthat any system that performs the method steps, in any order, is withinthe scope of the invention.

As shown, the method 1400 begins at step 1402, where the user invokesthe quantity takeoff engine 102, loads the CAD drawing 110, and selectsa 2D sheet from the CAD drawing 110. At step 1404, the user selects apoint inside an instance of a drawing object in the selected 2D sheetusing the area takeoff measurement tool 186. At step 1406, the areatakeoff measurement tool 186 determines the boundary of the selectedinstance. As part of this process, the area takeoff measurement tool 186intelligently handles any overlapping instances. For example, whencalculating the boundary of an instance of a room object, the areatakeoff measurement tool 186 is configured to disregard any instances ofa door drawing object that overlap the area encompassed by the instanceof the room object.

At step 1408, the area takeoff measurement tool 186 calculates thevirtual area of the selected instance by calculating the virtual areawithin the boundary. The area takeoff measurement tool 186 may performthis calculation in any technically feasible fashion. For example, ifthe boundary is a polygon, the area takeoff measurement tool 186 maysubdivide the bounded area into a set of contiguous, non-overlappingrectangles. The area takeoff measurement tool 186 may then calculate thevirtual area of each of these rectangles and, subsequently, add thevirtual areas together to determine the virtual area encompassed by theselected instance. At step 1412, the area takeoff measurement tool 186reads a sheet scale associated with the selected 2D sheet. Again, thesheet scale specifies the conversion between the dimensions of therepresentative elements in the 2D sheet and the actual elements. At step1414, the area takeoff measurement tool 186 determines the areaencompassed by the selected instance by scaling the virtual area by thesheet scale.

At step 1416, the area takeoff measurement tool 186 adds markupinformation to the selected 2D sheet and any other 2D sheets 124 in theCAD drawing 110 that include the instance. The markup informationindicates the area of the selected instance. At step 1418, the areatakeoff measurement tool 186 maps the instance to a takeoff object. Aspart of the mapping process, in one embodiment, the area takeoffmeasurement tool 186 first determines whether there is an existingtakeoff object corresponding to the instance. If there is nocorresponding takeoff object, then the area takeoff tool 186 creates anew takeoff object, sets the quantify type included in the takeoffobject to “area,” and prompts the user to enter cost data. Subsequently,the quantity takeoff engine 102 calculates the cost of the instance,based on the area of the instance and the cost data, and updates atakeoff report that includes similar costs computed for all instancespreviously selected using the takeoff measurement tools 118.

In sum, the takeoff process used to generate estimated costs for aconstruction process is facilitated by automatically quantifyinginstances of drawing objects in 2D sheets. In some embodiments, the usermay select an instance of a drawing object using a property takeoffmeasurement tool. The property takeoff measurement tool identifies thequantify type, such as count or area, and the instance-specificproperty, such as number or area, to be quantified. Subsequently, theproperty takeoff measurement tool performs any associated measurementcalculations to quantify the instance. However, some 2D sheets includegeometries that represent instances, but no additional data such asproperties. To quantify an instance in such a 2D sheet, the user may usea takeoff measurement tool that does not rely on existing propertyinformation. For example, in some embodiments, the user may select avector (i.e., line) in a 2D sheet using a linear takeoff measurementtool. The linear takeoff measurement tool automatically quantifies theinstance by determining the virtual length of the selected vector andscaling the virtual length using a sheet scale associated with the 2Dsheet. Similarly, in some embodiments, the user may select a pointencompassed by geometries representing an instance, such as a room, in a2D sheet using an area takeoff measurement tool. The area takeoffmeasurement tool automatically quantifies the instance by determiningthe boundary of the instance, calculating the virtual area within theboundary, and scaling the virtual area using a sheet scale associatedwith the 2D sheet.

Each of the takeoff measurement tools is configured to add markupinformation to the CAD drawing and the associated 2D sheets to visualindicate the quantify information. Further, each of the takeoffmeasurement tools is configured to interact with the takeoff engine tofacilitate the remainder of the takeoff process. Advantageously, byautomatically quantifying instances, the takeoff measurement toolsincrease the accuracy of the measurements as compared to manualtechniques, such as using a digitizer. Further, automaticallyquantifying instances reduces the time required to perform takeoffmeasurements and, consequently, facilitates quickly and accuratelyassessing the impact of different design choices. Finally, by performingtakeoff on a per-instance basis, the takeoff measurement toolsfacilitate an incremental, interactive design approach that is favoredby some users.

While the foregoing is directed to embodiments of the present invention,other and further embodiments of the invention may be devised withoutdeparting from the basic scope thereof. For example, aspects of thepresent invention may be implemented in hardware or software or in acombination of hardware and software. One embodiment of the inventionmay be implemented as a program product for use with a computer system.The program(s) of the program product define functions of theembodiments (including the methods described herein) and can becontained on a variety of computer-readable storage media. Illustrativecomputer-readable storage media include, but are not limited to: (i)non-writable storage media (e.g., read-only memory devices within acomputer such as CD-ROM disks readable by a CD-ROM drive, flash memory,ROM chips or any type of solid-state non-volatile semiconductor memory)on which information is permanently stored; and (ii) writable storagemedia (e.g., floppy disks within a diskette drive or hard-disk drive orany type of solid-state random-access semiconductor memory) on whichalterable information is stored. Such computer-readable storage media,when carrying computer-readable instructions that direct the functionsof the present invention, are embodiments of the present invention.Therefore, the scope of the present invention is determined by theclaims that follow.

What is claimed is:
 1. A method for performing quantity takeoffcomputations, the method comprising: receiving a selection of atwo-dimensional (2D) sheet included in a computer-aided design (CAD)drawing; receiving a selection of a quantify type and a quantifyproperty for a takeoff object, wherein the quantify type specifies howinstances of a first drawing object are quantified, and wherein thequantify property specifies a property of the first drawing object usedto determine a value for the quantify type for a given instance of thefirst drawing object; including the quantify type selection and thequantify property selection in the takeoff object, wherein the takeoffobject further includes cost data; associating the takeoff object withthe first drawing object; receiving a selection of a first instanceassociated with the first drawing object included in the 2D sheet,wherein receiving the selection of the first instance comprisesreceiving a point located within the 2D sheet and encompassed by thefirst instance; quantifying, via one or more processors, the firstinstance to determine a first quantified value by at least determining avalue of the selected quantify property for the first instance andcalculating a value of the selected quantify type based on thedetermined value of the selected quantify property, wherein quantifyingthe first instance includes: determining a boundary associated with thefirst instance, determining a virtual area within the boundary, parsingthe 2D sheet to determine a sheet scale, and calculating an area of thefirst instance by scaling the virtual area by the sheet scale, andsetting the first quantified value equal to the area of the firstinstance; and computing a cost estimate for the first instance based onthe first quantified value and the cost data.
 2. The method of claim 1,wherein the step of determining a boundary associated with the firstinstance comprises: determining an initial boundary associated with thefirst instance that encompasses the area of the first instance;identifying a second instance associated with a second drawing objectincluded in the 2D sheet that overlaps the first instance; and adjustingthe initial boundary associated with the first instance based on thesecond instance.
 3. The method of claim 1, wherein the step of receivinga selection of a first instance comprises receiving one or moregeometries located within the 2D sheet and associated with the firstinstance.
 4. The method of claim 1, further comprising the step ofadding markup information to the CAD drawing to visually indicate thefirst quantified value.
 5. The method of claim 1, further comprising thestep of updating a cumulative cost estimate by adding the cost estimatefor the first instance to the cumulative cost estimate.
 6. The method ofclaim 1, wherein the takeoff object is associated with a takeoffcategory, and the takeoff category is associated with one or moreadditional takeoff objects according to data stored in a database.
 7. Anon-transitory computer-readable medium including instructions that,when executed by a processing unit, cause the processing unit to performquantity takeoff computations, by performing the steps of: receiving aselection of a two-dimensional (2D) sheet included in a computer-aideddesign (CAD) drawing; receiving a selection of a quantify type and aquantify property for a takeoff object, wherein the quantify typespecifies how instances of a first drawing object are quantified, andwherein the quantify property specifies a property of the first drawingobject used to determine a value for the quantify type for a giveninstance of the first drawing object; including the quantify typeselection and the quantify property selection in the takeoff object,wherein the takeoff object further includes cost data; associating thetakeoff object with the first drawing object; receiving a selection of afirst instance associated with the first drawing object included in the2D sheet, wherein receiving the selection of the first instancecomprises receiving a point located within the 2D sheet and encompassedby the first instance; quantifying, via one or more processors, thefirst instance to determine a first quantified value by at leastdetermining a value of the selected quantify property for the firstinstance and calculating a value of the selected quantify type based onthe determined value of the selected quantify property, whereinquantifying the first instance includes: determining a boundaryassociated with the first instance, determining a virtual area withinthe boundary, parsing the 2D sheet to determine a sheet scale, andcalculating an area of the first instance by scaling the virtual area bythe sheet scale, and setting the first quantified value equal to thearea of the first instance; and computing a cost estimate for the firstinstance based on the first quantified value and the cost data.
 8. Thecomputer-readable medium of claim 7, wherein the step of determining aboundary associated with the first instance comprises: determining aninitial boundary associated with the first instance that encompasses thearea of the first instance; identifying a second instance associatedwith a second drawing object included in the 2D sheet that overlaps thefirst instance; and adjusting the initial boundary associated with thefirst instance based on the second instance.
 9. The computer-readablemedium of claim 7, wherein the step of receiving a selection of a firstinstance comprises receiving one or more geometries located within the2D sheet and associated with the first instance.
 10. Thecomputer-readable medium of claim 7, further comprising the step ofadding markup information to the CAD drawing to visually indicate thefirst quantified value.
 11. The computer-readable medium of claim 7,further comprising the step of updating a cumulative cost estimate byadding the cost estimate for the first instance to the cumulative costestimate.
 12. A computing system configured to perform quantity takeoffcomputations, the computing system comprising: a processing unit; and amemory coupled to the processing unit, wherein an application programresides within the memory and is configured to: receive a selection of atwo-dimensional (2D) sheet included in a computer-aided design (CAD)drawing, receive a selection of a quantify type and a quantify propertyfor a takeoff object, wherein the quantify type specifies how instancesof a first drawing object are quantified, and wherein the quantifyproperty specifies a property of the first drawing object used todetermine a value for the quantify type for a given instance of thefirst drawing object, include the quantify type selection and thequantify property selection in the takeoff object, wherein the takeoffobject further includes cost data, associate the takeoff object with thefirst drawing object, receive a selection of a first instance associatedwith the first drawing object included in the 2D sheet, whereinreceiving the selection of the first instance comprises receiving apoint located within the 2D sheet and encompassed by the first instance,quantify the first instance to determine a first quantified value by atleast determining a value of the selected quantify property for thefirst instance and calculating a value of the selected quantify typebased on the determined value of the selected quantify property, whereinquantifying the first instance includes: determining a boundaryassociated with the first instance; determining a virtual area withinthe boundary; parsing the 2D sheet to determine a sheet scale; andcalculating an area of the first instance by scaling the virtual area bythe sheet scale, and setting the first quantified value equal to thearea of the first instance, and compute a cost estimate for the firstinstance based on the first quantified value and the cost data.
 13. Thecomputing system of claim 12, wherein, to determine a boundaryassociated with the first instance, the application program isconfigured to: determine an initial boundary associated with the firstinstance that encompasses the area of the first instance; identify asecond instance associated with a second drawing object included in the2D sheet that overlaps the first instance; and adjust the initialboundary associated with the first instance based on the secondinstance.
 14. The computing system of claim 12, wherein, to receive aselection of a first instance, the application program is configured toreceive one or more geometries located within the 2D sheet andassociated with the first instance.